#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//
//typedef struct s
//{
//	int A(int x)
//	{
//		return x;
//	}
//}s;
//
//int main()
//{
//	s s1;
//
//	int x = s1.A(1);
//	printf("%d", x);
//	return 0;
//}
#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<string, string>p;
string find(string a)
{
	if (p[a] != a) p[a] = find(p[a]);

	return p[a];
}
int main()
{
	char c;
	cin >> c;
	while (c != '$')
	{
		string s;
		cin >> s;
		if (c == '#')
		{
			cin >> c;
			while (c == '+')
			{
				string a;
				cin >> a;
				p[a] = s;
				cin >> c;
			}
		}
		else if (c == '?')
		{
			cout << s << ' ';
			cout << find(s) << endl;
			cin >> c;
		}
	}
	return 0;
}